//
// Created by 啊汤哥 on 2025/6/24.
//
#include <stdio.h>
#include <stdlib.h>

#define MaxSize 10
typedef struct {
    int data[MaxSize];
    int front, rear;
} SqQueue;

// 初始话队列

void InitQueue(SqQueue &q) {
    q.rear=q.front = 0;
}

// 判断队列是否为空
bool EmptyQueue(SqQueue q) {
    if (q.front == q.rear) {
        return true;
    }
    return false;
}

// 判断队列是否已经满了
bool isFull(SqQueue q) {
    return (q.rear+1) % MaxSize == q.front;
}

// 入队操作 不需要添加引用只是一个将元素添加到队列里而已
bool EnQueue(SqQueue &q, int x) {
    if (isFull(q)) {
        return false;
    }
    // 从队尾插入
    q.data[q.rear] = x;
    q.rear = (q.rear+1) % MaxSize;
    return true;
}

// 出队操作  需要获取这个引用
bool DeQueue(SqQueue &q, int &x) {
    if (EmptyQueue(q)) {
        return false; // 如果队列为空的话 无法出队
    }
    x = q.data[q.front];
    q.front = (q.front+1) % MaxSize;
    return true;
}